/*
  学习目标：使用subscribe监听store仓库数据变化
  语法：const 解除监听的函数= store.subscribe(() => {
     回调函数会在数据变化时，自动执行
  })
*/

import { legacy_createStore as createStore } from 'redux';

const store = createStore(function (state = { count: 0 }, action) {
  if (action.type === 'add') {
    return {
      ...state,
      count: state.count + 1,
    };
  }

  if (action.type === 'des') {
    return {
      ...state,
      count: state.count - 1,
    };
  }
  return state;
});

const unFn = store.subscribe(() => {
  // 回调函数会在数据变化时，自动执行
  console.log('store.getState()  ----->  ', store.getState());
});

store.dispatch({ type: 'add' });
store.dispatch({ type: 'add' });
store.dispatch({ type: 'add' });

unFn();

// 💥💥 注意：必须在开启监听之后，解除监听之前，仓库变化才能被监听到
// 以下代码不会触发监听
store.dispatch({ type: 'add' });
store.dispatch({ type: 'add' });
store.dispatch({ type: 'add' });
